#include "Valeur.hpp"
#include <sstream>

using namespace std;

void Valeur::initStr()
{
	this->s = NULL;
}

Valeur::Valeur(){
	this->type = NULL;
	initStr();
}

Valeur::Valeur(Type* t){
    this->type= t;
	initStr();
}
Valeur::Valeur(Type* t, int i){
    this->type= t;
    this->i= i;
	initStr();
}
Valeur::Valeur(Type* t, float f){
    this->type= t;
    this->f= f;
	initStr();
}
Valeur::Valeur(Type* t, std::string* s){
    this->type= t;
    this->s= s;
}
Valeur::Valeur(Type* t, bool b){
    this->type= t;
    this->b= b;
	initStr();
}

Type* Valeur::getT(){
    return this->type;
}

bool Valeur::getValeurBool(){
        return b;
}
int Valeur::getValeurInteger(){
        return i;
}
float Valeur::getValeurFloat(){
        return f;
}
std::string* Valeur::getValeurString(){
        return s;
}

string Valeur::toString() const
{
	ostringstream os;
	if(this->s != NULL) {
		os << "Valeur : "
			<< this->b << " -- "
			<< this->i << " -- "
			<< this->f << " -- "
			<< *this->s << " -- ";
	}
	else {
		os << "Valeur : "
			<< this->b << " -- "
			<< this->i << " -- "
			<< this->f << " -- "
			<< this->s << " -- ";
	}

   	return os.str();
}
